package com.practice.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class BaseDao {
    private Connection conn=null;

    public BaseDao(Connection conn){
        this.conn = conn;//将业务逻辑层传过来的连接对象赋给当前全局的conn
    }
    /**
     * 增删改通用方法
     * @param sql  sql语句
     * @param params  传过来的参数，可以是多个，也可以没有，多个参数用逗号隔开
     * @return  返影响的行数
     */
    public int executeUpdate(String sql,Object ... params ){
        int jg = 0;
        PreparedStatement pstm=null;
        try {
            pstm = conn.prepareStatement(sql);
            //设置值
            if(params.length!=0){
                for(int i=0;i<params.length;i++){
                    pstm.setObject(i+1, params[i]);
                }
            }
            //执行
            jg = pstm.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return jg;
    }

    /**
     * 通用的查询方法
     * @param sql  查询语句
     * @param params  参数，可多个，可没有
     * @return  ResultSet数据集
     */
    public ResultSet executeQuery(String sql, Object ... params){
        ResultSet rs = null;
        PreparedStatement pstm=null;
        try {
            pstm = conn.prepareStatement(sql);
            //设置值
            if(params.length!=0){
                for(int i=0;i<params.length;i++){
                    pstm.setObject(i+1, params[i]);
                }
            }
            //执行查询
            rs = pstm.executeQuery();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }
}
